package org.spring.aop.framework;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.spring.aop.AdvisedSupport;

/**
 * 代理工厂的基类。提供对可配置 AopProxyFactory 的便捷访问。
 *
 * @author 李坤
 * @date 2022/4/18 19:19
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ProxyCreatorSupport extends AdvisedSupport {

    /**
     * AOP 代理工厂
     */
    protected AopProxyFactory aopProxyFactory;

    /**
     * 子类应该调用它来获得一个新的 AOP 代理。
     * 他们应该<b>不<b>创建一个以 {@code this} 作为参数的 AOP 代理。
     */
    protected final synchronized AopProxy createAopProxy() {
        return this.getAopProxyFactory().createAopProxy(this);
    }

}
